﻿Shader "Hidden/ftShowPreview"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }

    SubShader {

        Tags { "RenderType"="Opaque" }
        LOD 200

        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard vertex:vert noinstancing noshadow noforwardadd noambient

        sampler2D _ftPreviewTexture;
        float4x4 _ftPreviewViewProj;

        struct Input
        {
            float4 projUV;
        };

        struct vinput
        {
            float4 vertex : POSITION;

            // needed for Unity
            float2 texcoord1 : TEXCOORD1;
            float2 texcoord2 : TEXCOORD2;
            float3 normal : NORMAL0;
            float2 texcoord : TEXCOORD0;
            float4 tangent : TANGENT;
        };

        void vert (inout vinput v, out Input o)
        {
            UNITY_INITIALIZE_OUTPUT(Input,o);

            float4 worldPos = mul(unity_ObjectToWorld, v.vertex);
            o.projUV = mul(_ftPreviewViewProj, worldPos);
        }

        void surf (Input IN, inout SurfaceOutputStandard o) {
            o.Albedo = 0;
            o.Smoothness = 0;
            o.Occlusion = 0;
            o.Metallic = 1;

            float4 color = 0;
            float2 uv = IN.projUV.xy / IN.projUV.w;
            if (uv.x < -1 || uv.x > 1 || uv.y < -1 || uv.y > 1)
            {
                color = 0;
            }
            else
            {
                color = tex2D(_ftPreviewTexture, uv * 0.5 + 0.5);
            }

            o.Emission = color;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

